package doit.gen.util;

import java.util.List;
import java.util.Map;

/**
 * <pre>
 * system      : 공통
 * menu        : 공통
 * source      : Generator.java
 * description : 테이블에 매핑되는 소스 생성
 * </pre> 
 * @version
 * <pre> 
 * 1.0	2008. 02. 14  monolist  최초 작성
 * 1.1	
 * </pre>
 */

@SuppressWarnings("unchecked")

public class Generator {	
	
	/**
	 * 서버측 소스 생성
	 * @param input
	 * @param tableName
	 * @param columns
	 * @throws Exception
	 */
	public void generateServerSource( Map input, String tableName, List columns) throws Exception {
	    
		// Bean 생성
		new GenerateDomain().generate( input, tableName, columns);
		// DAO 생성
		new GenerateDAO().generate( input, tableName, columns);
		// DAO Impl 생성
		new GenerateDAOImpl().generate( input, tableName, columns);
		// SQL 생성
		new GenerateIBatis().generate( input, tableName, columns);
		// Service 생성
		new GenerateService().generate( input, tableName, columns);
		// Service Impl 생성
		new GenerateServiceImpl().generate( input, tableName, columns);
		// Controller 생성
		new GenerateController().generate( input, tableName, columns);
		// README 파일 생성
		new GenerateReadme().generate( input, tableName, columns);		
	}

	/**
	 * 클라이언트측 소스 생성
	 * @param input
	 * @throws Exception
	 */
	public void generateClientSource( Map input) throws Exception {
		String tableName = (String) input.get("tableName");
		
		String[] listColumn = input.get("listColumn") == null ? null : ((String) input.get("listColumn")).split(",");
		String[] insertColumn = input.get("insertColumn") == null ? null : ((String) input.get("insertColumn")).split(",");
		String[] updateColumn = input.get("updateColumn") == null ? null : ((String) input.get("updateColumn")).split(",");

		if (listColumn != null) {
			System.out.println("listColumn.length   : " + listColumn.length);
		}
		if (insertColumn != null) {
			System.out.println("insertColumn.length   : " + insertColumn.length);
		}
		if (updateColumn != null) {
			System.out.println("updateColumn.length   : " + updateColumn.length);
		}
		
		// List JSP 생성
		new GenerateJspPageList().generate( input, tableName, listColumn);
		// View JSP 생성
		new GenerateJspView().generate( input, tableName, listColumn);
		// Insert JSP 생성
		new GenerateJspInsert().generate( input, tableName, listColumn);
		// Update JSP 생성
		new GenerateJspUpdate().generate( input, tableName, listColumn);		
	}
}
